/*
    1. let const 模板字符串
    2. 箭头函数
    3. 对象、属性的简写
    4. 模板字符串
    5. Promise
*/

// 1. let const的使用  let和 var是一样的用来定义变量

// let是一个块作用域
/* let a=123;

if(true){
 let a=123;
}
console.log(a); */

/*
    常量
        const PI=3.14159;
        PI=3;
        console.log(PI);
 */


// 模板字符串
/* var name='张三';
var age=20;
console.log(name+'的年龄是'+age);

var name='张三';
var age=20;
console.log(`${name}的年龄是${age}`); */

// 方法的简写 属性的简写
/* var name='zhangsan';
var app={
    name:name
}

console.log(app.name); */

// 属性的简写
/* var name='zhangsan';
var app={
    name
}
console.log(app.name); */

// 方法的简写
/* var name='zhangsan';
var app={
    name,
    run(){

        console.log(`${this.name}在跑步`);
    }
}

app.run(); */

// 箭头函数   this指向上下文
/* setTimeout(function (){
    console.log('执行');
 },1000)


setTimeout(() => {
    console.log('执行');
},1000) */


// 回调函数 获取异步方法里面的数据
/* function getData(callback) {
    // ajax
    setTimeout(function () {
        var name = '张三';
        callback(name);
    }, 1000);
} */

//外部获取异步方法里面的数据
/* getData(function (data) {
    console.log(data + '111');
}) */

// Promise来处理异步  resolve 成功的回调函数   reject失败的回调函数
/* var p=new Promise(function(resolve,reject){
    //ajax
    setTimeout(function(){
        var name='张三';
        if(Math.random()>0.7){
           resolve(name);
        }else{
           reject('失败');
        }
    },1000);
})
p.then((data)=> {
   console.log(data);
}) */

// 获取异步方法里面的数据
/* function getData(resolve,reject){
    //ajax
    setTimeout(function(){
        var name='张三';
        resolve(name);
    },1000);
}

var p=new Promise(getData);

p.then((data)=&gt;{
    console.log(data);
})
*/

/* var p = new Promise(function (resolve, reject) {
    setTimeout(function () {
        var name = '张三 11';
        resolve(name);
    }, 1000);
})

p.then(function (data) {
    console.log(data);
}) */


/*  function getData(resolve,reject){
    //ajax
    setTimeout(function(){
        var name='张三 222';
        resolve(name);
    },1000);
}

var p=new Promise(getData);

p.then((data)=>{
    console.log(data);
}) */